home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / socket.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  10KB  |  411 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. import _socket
  5. from _socket import *
  6. _have_ssl = False
  7.  
  8. try:
  9.     import _ssl
  10.     from _ssl import *
  11.     _have_ssl = True
  12. except ImportError:
  13.     pass
  14.  
  15. import os
  16. import sys
  17.  
  18. try:
  19.     from cStringIO import StringIO
  20. except ImportError:
  21.     from StringIO import StringIO
  22.  
  23.  
  24. try:
  25.     from errno import EBADF
  26. except ImportError:
  27.     EBADF = 9
  28.  
  29. __all__ = [
  30.     'getfqdn']
  31. __all__.extend(os._get_exports_list(_socket))
  32. if _have_ssl:
  33.     __all__.extend(os._get_exports_list(_ssl))
  34.  
  35. _realsocket = socket
  36. if _have_ssl:
  37.     _realssl = ssl
  38.     
  39.     def ssl(sock, keyfile = None, certfile = None):
  40.         if hasattr(sock, '_sock'):
  41.             sock = sock._sock
  42.         
  43.         return _realssl(sock, keyfile, certfile)
  44.  
  45.  
  46. if sys.platform.lower().startswith('win'):
  47.     errorTab = { }
  48.     errorTab[10004] = 'The operation was interrupted.'
  49.     errorTab[10009] = 'A bad file handle was passed.'
  50.     errorTab[10013] = 'Permission denied.'
  51.     errorTab[10014] = 'A fault occurred on the network??'
  52.     errorTab[10022] = 'An invalid operation was attempted.'
  53.     errorTab[10035] = 'The socket operation would block'
  54.     errorTab[10036] = 'A blocking operation is already in progress.'
  55.     errorTab[10048] = 'The network address is in use.'
  56.     errorTab[10054] = 'The connection has been reset.'
  57.     errorTab[10058] = 'The network has been shut down.'
  58.     errorTab[10060] = 'The operation timed out.'
  59.     errorTab[10061] = 'Connection refused.'
  60.     errorTab[10063] = 'The name is too long.'
  61.     errorTab[10064] = 'The host is down.'
  62.     errorTab[10065] = 'The host is unreachable.'
  63.     __all__.append('errorTab')
  64.  
  65.  
  66. def getfqdn(name = ''):
  67.     name = name.strip()
  68.     if not name or name == '0.0.0.0':
  69.         name = gethostname()
  70.     
  71.     
  72.     try:
  73.         (hostname, aliases, ipaddrs) = gethostbyaddr(name)
  74.     except error:
  75.         pass
  76.  
  77.     aliases.insert(0, hostname)
  78.     for name in aliases:
  79.         if '.' in name:
  80.             break
  81.             continue
  82.     else:
  83.         name = hostname
  84.     return name
  85.  
  86. _socketmethods = ('bind', 'connect', 'connect_ex', 'fileno', 'listen', 'getpeername', 'getsockname', 'getsockopt', 'setsockopt', 'sendall', 'setblocking', 'settimeout', 'gettimeout', 'shutdown')
  87. if sys.platform == 'riscos':
  88.     _socketmethods = _socketmethods + ('sleeptaskw',)
  89.  
  90. _delegate_methods = ('recv', 'recvfrom', 'recv_into', 'recvfrom_into', 'send', 'sendto')
  91.  
  92. class _closedsocket(object):
  93.     __slots__ = []
  94.     
  95.     def _dummy(*args):
  96.         raise error(EBADF, 'Bad file descriptor')
  97.  
  98.     send = recv = recv_into = sendto = recvfrom = recvfrom_into = _dummy
  99.     __getattr__ = _dummy
  100.  
  101.  
  102. class _socketobject(object):
  103.     __doc__ = _realsocket.__doc__
  104.     __slots__ = [
  105.         '_sock',
  106.         '__weakref__'] + list(_delegate_methods)
  107.     
  108.     def __init__(self, family = AF_INET, type = SOCK_STREAM, proto = 0, _sock = None):
  109.         if _sock is None:
  110.             _sock = _realsocket(family, type, proto)
  111.         
  112.         self._sock = _sock
  113.         for method in _delegate_methods:
  114.             setattr(self, method, getattr(_sock, method))
  115.         
  116.  
  117.     
  118.     def close(self):
  119.         self._sock = _closedsocket()
  120.         dummy = self._sock._dummy
  121.         for method in _delegate_methods:
  122.             setattr(self, method, dummy)
  123.         
  124.  
  125.     close.__doc__ = _realsocket.close.__doc__
  126.     
  127.     def accept(self):
  128.         (sock, addr) = self._sock.accept()
  129.         return (_socketobject(_sock = sock), addr)
  130.  
  131.     accept.__doc__ = _realsocket.accept.__doc__
  132.     
  133.     def dup(self):
  134.         return _socketobject(_sock = self._sock)
  135.  
  136.     
  137.     def makefile(self, mode = 'r', bufsize = -1):
  138.         return _fileobject(self._sock, mode, bufsize)
  139.  
  140.     family = property((lambda self: self._sock.family), doc = 'the socket family')
  141.     type = property((lambda self: self._sock.type), doc = 'the socket type')
  142.     proto = property((lambda self: self._sock.proto), doc = 'the socket protocol')
  143.     _s = 'def %s(self, *args): return self._sock.%s(*args)\n\n%s.__doc__ = _realsocket.%s.__doc__\n'
  144.     for _m in _socketmethods:
  145.         exec _s % (_m, _m, _m, _m)
  146.     
  147.     del _m
  148.     del _s
  149.  
  150. socket = SocketType = _socketobject
  151.  
  152. class _fileobject(object):
  153.     default_bufsize = 8192
  154.     name = '<socket>'
  155.     __slots__ = [
  156.         'mode',
  157.         'bufsize',
  158.         'softspace',
  159.         '_sock',
  160.         '_rbufsize',
  161.         '_wbufsize',
  162.         '_rbuf',
  163.         '_wbuf',
  164.         '_close']
  165.     
  166.     def __init__(self, sock, mode = 'rb', bufsize = -1, close = False):
  167.         self._sock = sock
  168.         self.mode = mode
  169.         if bufsize < 0:
  170.             bufsize = self.default_bufsize
  171.         
  172.         self.bufsize = bufsize
  173.         self.softspace = False
  174.         if bufsize == 0:
  175.             self._rbufsize = 1
  176.         elif bufsize == 1:
  177.             self._rbufsize = self.default_bufsize
  178.         else:
  179.             self._rbufsize = bufsize
  180.         self._wbufsize = bufsize
  181.         self._rbuf = StringIO()
  182.         self._wbuf = []
  183.         self._close = close
  184.  
  185.     
  186.     def _getclosed(self):
  187.         return self._sock is None
  188.  
  189.     closed = property(_getclosed, doc = 'True if the file is closed')
  190.     
  191.     def close(self):
  192.         
  193.         try:
  194.             if self._sock:
  195.                 self.flush()
  196.         finally:
  197.             if self._close:
  198.                 self._sock.close()
  199.             
  200.             self._sock = None
  201.  
  202.  
  203.     
  204.     def __del__(self):
  205.         
  206.         try:
  207.             self.close()
  208.         except:
  209.             pass
  210.  
  211.  
  212.     
  213.     def flush(self):
  214.         if self._wbuf:
  215.             buffer = ''.join(self._wbuf)
  216.             self._wbuf = []
  217.             self._sock.sendall(buffer)
  218.         
  219.  
  220.     
  221.     def fileno(self):
  222.         return self._sock.fileno()
  223.  
  224.     
  225.     def write(self, data):
  226.         data = str(data)
  227.         if not data:
  228.             return None
  229.         
  230.         self._wbuf.append(data)
  231.         if not self._wbufsize == 0:
  232.             if self._wbufsize == 1 or '\n' in data or self._get_wbuf_len() >= self._wbufsize:
  233.                 self.flush()
  234.             
  235.  
  236.     
  237.     def writelines(self, list):
  238.         self._wbuf.extend(filter(None, map(str, list)))
  239.         if self._wbufsize <= 1 or self._get_wbuf_len() >= self._wbufsize:
  240.             self.flush()
  241.         
  242.  
  243.     
  244.     def _get_wbuf_len(self):
  245.         buf_len = 0
  246.         for x in self._wbuf:
  247.             buf_len += len(x)
  248.         
  249.         return buf_len
  250.  
  251.     
  252.     def read(self, size = -1):
  253.         rbufsize = max(self._rbufsize, self.default_bufsize)
  254.         buf = self._rbuf
  255.         buf.seek(0, 2)
  256.         if size < 0:
  257.             self._rbuf = StringIO()
  258.             while True:
  259.                 data = self._sock.recv(rbufsize)
  260.                 if not data:
  261.                     break
  262.                 
  263.                 buf.write(data)
  264.             return buf.getvalue()
  265.         else:
  266.             buf_len = buf.tell()
  267.             if buf_len >= size:
  268.                 buf.seek(0)
  269.                 rv = buf.read(size)
  270.                 self._rbuf = StringIO()
  271.                 self._rbuf.write(buf.read())
  272.                 return rv
  273.             
  274.             self._rbuf = StringIO()
  275.             while True:
  276.                 left = size - buf_len
  277.                 data = self._sock.recv(left)
  278.                 if not data:
  279.                     break
  280.                 
  281.                 n = len(data)
  282.                 if n == size and not buf_len:
  283.                     return data
  284.                 
  285.                 if n == left:
  286.                     buf.write(data)
  287.                     del data
  288.                     break
  289.                 
  290.                 buf.write(data)
  291.                 buf_len += n
  292.                 del data
  293.             return buf.getvalue()
  294.  
  295.     
  296.     def readline(self, size = -1):
  297.         buf = self._rbuf
  298.         buf.seek(0, 2)
  299.         if buf.tell() > 0:
  300.             buf.seek(0)
  301.             bline = buf.readline(size)
  302.             if bline.endswith('\n') or len(bline) == size:
  303.                 self._rbuf = StringIO()
  304.                 self._rbuf.write(buf.read())
  305.                 return bline
  306.             
  307.             del bline
  308.         
  309.         if size < 0:
  310.             if self._rbufsize <= 1:
  311.                 buf.seek(0)
  312.                 buffers = [
  313.                     buf.read()]
  314.                 self._rbuf = StringIO()
  315.                 data = None
  316.                 recv = self._sock.recv
  317.                 while data != '\n':
  318.                     data = recv(1)
  319.                     if not data:
  320.                         break
  321.                     
  322.                     buffers.append(data)
  323.                 return ''.join(buffers)
  324.             
  325.             buf.seek(0, 2)
  326.             self._rbuf = StringIO()
  327.             while True:
  328.                 data = self._sock.recv(self._rbufsize)
  329.                 if not data:
  330.                     break
  331.                 
  332.                 nl = data.find('\n')
  333.                 if nl >= 0:
  334.                     nl += 1
  335.                     buf.write(buffer(data, 0, nl))
  336.                     self._rbuf.write(buffer(data, nl))
  337.                     del data
  338.                     break
  339.                 
  340.                 buf.write(data)
  341.             return buf.getvalue()
  342.         else:
  343.             buf.seek(0, 2)
  344.             buf_len = buf.tell()
  345.             if buf_len >= size:
  346.                 buf.seek(0)
  347.                 rv = buf.read(size)
  348.                 self._rbuf = StringIO()
  349.                 self._rbuf.write(buf.read())
  350.                 return rv
  351.             
  352.             self._rbuf = StringIO()
  353.             while True:
  354.                 data = self._sock.recv(self._rbufsize)
  355.                 if not data:
  356.                     break
  357.                 
  358.                 left = size - buf_len
  359.                 nl = data.find('\n', 0, left)
  360.                 if nl >= 0:
  361.                     nl += 1
  362.                     self._rbuf.write(buffer(data, nl))
  363.                     if buf_len:
  364.                         buf.write(buffer(data, 0, nl))
  365.                         break
  366.                     else:
  367.                         return data[:nl]
  368.                 
  369.                 n = len(data)
  370.                 if n == size and not buf_len:
  371.                     return data
  372.                 
  373.                 if n >= left:
  374.                     buf.write(buffer(data, 0, left))
  375.                     self._rbuf.write(buffer(data, left))
  376.                     break
  377.                 
  378.                 buf.write(data)
  379.                 buf_len += n
  380.             return buf.getvalue()
  381.  
  382.     
  383.     def readlines(self, sizehint = 0):
  384.         total = 0
  385.         list = []
  386.         while True:
  387.             line = self.readline()
  388.             if not line:
  389.                 break
  390.             
  391.             list.append(line)
  392.             total += len(line)
  393.             if sizehint and total >= sizehint:
  394.                 break
  395.                 continue
  396.         return list
  397.  
  398.     
  399.     def __iter__(self):
  400.         return self
  401.  
  402.     
  403.     def next(self):
  404.         line = self.readline()
  405.         if not line:
  406.             raise StopIteration
  407.         
  408.         return line
  409.  
  410.  
  411.